/*
Brainstormers 2D (Soccer Simulation League 2D)
PUBLIC SOURCE CODE RELEASE 2005
Copyright (C) 1998-2005 Neuroinformatics Group,
                        University of Osnabrueck, Germany

This program is free software; you can redistribute it and/or
modify it under the terms of the GNU General Public License
as published by the Free Software Foundation; either version 2
of the License, or (at your option) any later version.

This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
GNU General Public License for more details.

You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
*/


/* automatically generated from a server_param message using
   bool produce_server_param_parser()

                  DO NOT EDIT THIS FILE !!!
*/
#include "sensorparser.h"
#include "str2val.h"
#include "macro_msg.h"

bool SensorParser::manual_parse_server_param(const char * str, Msg_server_param & param) {
  const char * origin= str;
  
  bool res;
  
  char const* dum;
  res= strskip(str,"(server_param",str);
  while (res) {
    res= strskip(str,'(',str);
    if ( ! res ) {
      res= strskip(str,')',str);
      break;
    }
    bool unknown_option= false;
    switch( *str ) {
      // ----------------------------------------------------------------
    case 'w': 
      if ( strskip(str,"wind_random",dum) )  {
        str= dum;
        res= str2val(str,param.wind_random,str) && param.read_wind_random.set_ok() && strskip(str,')',str);
        break;
      }
      else if ( strskip(str,"wind_rand",dum) )  {
        str= dum;
        res= str2val(str,param.wind_rand,str) && param.read_wind_rand.set_ok() && strskip(str,')',str);
        break;
      }
      else if ( strskip(str,"wind_none",dum) )  {
        str= dum;
        res= str2val(str,param.wind_none,str) && param.read_wind_none.set_ok() && strskip(str,')',str);
        break;
      }
      else if ( strskip(str,"wind_force",dum) )  {
        str= dum;
        res= str2val(str,param.wind_force,str) && param.read_wind_force.set_ok() && strskip(str,')',str);
        break;
      }
      else if ( strskip(str,"wind_dir",dum) )  {
        str= dum;
        res= str2val(str,param.wind_dir,str) && param.read_wind_dir.set_ok() && strskip(str,')',str);
        break;
      }
      else if ( strskip(str,"wind_ang",dum) )  {
        str= dum;
        res= str2val(str,param.wind_ang,str) && param.read_wind_ang.set_ok() && strskip(str,')',str);
        break;
      }
      unknown_option= true;
      break;
      // ----------------------------------------------------------------
    case 'v': 
      if ( strskip(str,"visible_distance",dum) )  {
        str= dum;
        res= str2val(str,param.visible_distance,str) && param.read_visible_distance.set_ok() && strskip(str,')',str);
        break;
      }
      else if ( strskip(str,"visible_angle",dum) )  {
        str= dum;
        res= str2val(str,param.visible_angle,str) && param.read_visible_angle.set_ok() && strskip(str,')',str);
        break;
      }
      else if ( strskip(str,"verbose",dum) )  {
        str= dum;
        res= str2val(str,param.verbose,str) && param.read_verbose.set_ok() && strskip(str,')',str);
        break;
      }
      unknown_option= true;
      break;
      // ----------------------------------------------------------------
    case 'u': 
      if ( strskip(str,"use_offside",dum) )  {
        str= dum;
        res= str2val(str,param.use_offside,str) && param.read_use_offside.set_ok() && strskip(str,')',str);
        break;
      }
      unknown_option= true;
      break;
      // ----------------------------------------------------------------
    case 't': 
      if ( strskip(str,"text_logging",dum) )  {
        str= dum;
        res= str2val(str,param.text_logging,str) && param.read_text_logging.set_ok() && strskip(str,')',str);
        break;
      }
      else if ( strskip(str,"text_log_fixed_name",dum) )  {
        str= dum;
        res= str2val(str,param.text_log_fixed_name,str) && param.read_text_log_fixed_name.set_ok() && strskip(str,')',str);
        break;
      }
      else if ( strskip(str,"text_log_fixed",dum) )  {
        str= dum;
        res= str2val(str,param.text_log_fixed,str) && param.read_text_log_fixed.set_ok() && strskip(str,')',str);
        break;
      }
      else if ( strskip(str,"text_log_dir",dum) )  {
        str= dum;
        res= str2val(str,param.text_log_dir,str) && param.read_text_log_dir.set_ok() && strskip(str,')',str);
        break;
      }
      else if ( strskip(str,"text_log_dated",dum) )  {
        str= dum;
        res= str2val(str,param.text_log_dated,str) && param.read_text_log_dated.set_ok() && strskip(str,')',str);
        break;
      }
      else if ( strskip(str,"text_log_compression",dum) )  {
        str= dum;
        res= str2val(str,param.text_log_compression,str) && param.read_text_log_compression.set_ok() && strskip(str,')',str);
        break;
      }
      else if ( strskip(str,"team_actuator_noise",dum) )  {
        str= dum;
        res= str2val(str,param.team_actuator_noise,str) && param.read_team_actuator_noise.set_ok() && strskip(str,')',str);
        break;
      }
      else if ( strskip(str,"tackle_width",dum) )  {
        str= dum;
        res= str2val(str,param.tackle_width,str) && param.read_tackle_width.set_ok() && strskip(str,')',str);
        break;
      }
      else if ( strskip(str,"tackle_power_rate",dum) )  {
        str= dum;
        res= str2val(str,param.tackle_power_rate,str) && param.read_tackle_power_rate.set_ok() && strskip(str,')',str);
        break;
      }
      else if ( strskip(str,"tackle_exponent",dum) )  {
        str= dum;
        res= str2val(str,param.tackle_exponent,str) && param.read_tackle_exponent.set_ok() && strskip(str,')',str);
        break;
      }
      else if ( strskip(str,"tackle_dist",dum) )  {
        str= dum;
        res= str2val(str,param.tackle_dist,str) && param.read_tackle_dist.set_ok() && strskip(str,')',str);
        break;
      }
      else if ( strskip(str,"tackle_cycles",dum) )  {
        str= dum;
        res= str2val(str,param.tackle_cycles,str) && param.read_tackle_cycles.set_ok() && strskip(str,')',str);
        break;
      }
      else if ( strskip(str,"tackle_back_dist",dum) )  {
        str= dum;
        res= str2val(str,param.tackle_back_dist,str) && param.read_tackle_back_dist.set_ok() && strskip(str,')',str);
        break;
      }
      unknown_option= true;
      break;
      // ----------------------------------------------------------------
    case 's': 
      if ( strskip(str,"synch_offset",dum) )  {
        str= dum;
        res= str2val(str,param.synch_offset,str) && param.read_synch_offset.set_ok() && strskip(str,')',str);
        break;
      }
      else if ( strskip(str,"synch_mode",dum) )  {
        str= dum;
        res= str2val(str,param.synch_mode,str) && param.read_synch_mode.set_ok() && strskip(str,')',str);
        break;
      }
      else if ( strskip(str,"synch_micro_sleep",dum) )  {
        str= dum;
        res= str2val(str,param.synch_micro_sleep,str) && param.read_synch_micro_sleep.set_ok() && strskip(str,')',str);
        break;
      }
      else if ( strskip(str,"stopped_ball_vel",dum) )  {
        str= dum;
        res= str2val(str,param.stopped_ball_vel,str) && param.read_stopped_ball_vel.set_ok() && strskip(str,')',str);
        break;
      }
      else if ( strskip(str,"start_goal_r",dum) )  {
        str= dum;
        res= str2val(str,param.start_goal_r,str) && param.read_start_goal_r.set_ok() && strskip(str,')',str);
        break;
      }
      else if ( strskip(str,"start_goal_l",dum) )  {
        str= dum;
        res= str2val(str,param.start_goal_l,str) && param.read_start_goal_l.set_ok() && strskip(str,')',str);
        break;
      }
      else if ( strskip(str,"stamina_max",dum) )  {
        str= dum;
        res= str2val(str,param.stamina_max,str) && param.read_stamina_max.set_ok() && strskip(str,')',str);
        break;
      }
      else if ( strskip(str,"stamina_inc_max",dum) )  {
        str= dum;
        res= str2val(str,param.stamina_inc_max,str) && param.read_stamina_inc_max.set_ok() && strskip(str,')',str);
        break;
      }
      else if ( strskip(str,"slowness_on_top_for_right_team",dum) )  {
        str= dum;
        res= str2val(str,param.slowness_on_top_for_right_team,str) && param.read_slowness_on_top_for_right_team.set_ok() && strskip(str,')',str);
        break;
      }
      else if ( strskip(str,"slowness_on_top_for_left_team",dum) )  {
        str= dum;
        res= str2val(str,param.slowness_on_top_for_left_team,str) && param.read_slowness_on_top_for_left_team.set_ok() && strskip(str,')',str);
        break;
      }
      else if ( strskip(str,"slow_down_factor",dum) )  {
        str= dum;
        res= str2val(str,param.slow_down_factor,str) && param.read_slow_down_factor.set_ok() && strskip(str,')',str);
        break;
      }
      else if ( strskip(str,"simulator_step",dum) )  {
        str= dum;
        res= str2val(str,param.simulator_step,str) && param.read_simulator_step.set_ok() && strskip(str,')',str);
        break;
      }
      else if ( strskip(str,"sense_body_step",dum) )  {
        str= dum;
        res= str2val(str,param.sense_body_step,str) && param.read_sense_body_step.set_ok() && strskip(str,')',str);
        break;
      }
      else if ( strskip(str,"send_vi_step",dum) )  {
        str= dum;
        res= str2val(str,param.send_vi_step,str) && param.read_send_vi_step.set_ok() && strskip(str,')',str);
        break;
      }
      else if ( strskip(str,"send_step",dum) )  {
        str= dum;
        res= str2val(str,param.send_step,str) && param.read_send_step.set_ok() && strskip(str,')',str);
        break;
      }
      else if ( strskip(str,"send_comms",dum) )  {
        str= dum;
        res= str2val(str,param.send_comms,str) && param.read_send_comms.set_ok() && strskip(str,')',str);
        break;
      }
      else if ( strskip(str,"say_msg_size",dum) )  {
        str= dum;
        res= str2val(str,param.say_msg_size,str) && param.read_say_msg_size.set_ok() && strskip(str,')',str);
        break;
      }
      else if ( strskip(str,"say_coach_msg_size",dum) )  {
        str= dum;
        res= str2val(str,param.say_coach_msg_size,str) && param.read_say_coach_msg_size.set_ok() && strskip(str,')',str);
        break;
      }
      else if ( strskip(str,"say_coach_cnt_max",dum) )  {
        str= dum;
        res= str2val(str,param.say_coach_cnt_max,str) && param.read_say_coach_cnt_max.set_ok() && strskip(str,')',str);
        break;
      }
      unknown_option= true;
      break;
      // ----------------------------------------------------------------
    case 'r': 
      if ( strskip(str,"recv_step",dum) )  {
        str= dum;
        res= str2val(str,param.recv_step,str) && param.read_recv_step.set_ok() && strskip(str,')',str);
        break;
      }
      else if ( strskip(str,"recover_min",dum) )  {
        str= dum;
        res= str2val(str,param.recover_min,str) && param.read_recover_min.set_ok() && strskip(str,')',str);
        break;
      }
      else if ( strskip(str,"recover_dec_thr",dum) )  {
        str= dum;
        res= str2val(str,param.recover_dec_thr,str) && param.read_recover_dec_thr.set_ok() && strskip(str,')',str);
        break;
      }
      else if ( strskip(str,"recover_dec",dum) )  {
        str= dum;
        res= str2val(str,param.recover_dec,str) && param.read_recover_dec.set_ok() && strskip(str,')',str);
        break;
      }
      else if ( strskip(str,"record_messages",dum) )  {
        str= dum;
        res= str2val(str,param.record_messages,str) && param.read_record_messages.set_ok() && strskip(str,')',str);
        break;
      }
      unknown_option= true;
      break;
      // ----------------------------------------------------------------
    case 'q': 
      if ( strskip(str,"quantize_step_l",dum) )  {
        str= dum;
        res= str2val(str,param.quantize_step_l,str) && param.read_quantize_step_l.set_ok() && strskip(str,')',str);
        break;
      }
      else if ( strskip(str,"quantize_step",dum) )  {
        str= dum;
        res= str2val(str,param.quantize_step,str) && param.read_quantize_step.set_ok() && strskip(str,')',str);
        break;
      }
      unknown_option= true;
      break;
      // ----------------------------------------------------------------
    case 'p': 
      if ( strskip(str,"proper_goal_kicks",dum) )  {
        str= dum;
        res= str2val(str,param.proper_goal_kicks,str) && param.read_proper_goal_kicks.set_ok() && strskip(str,')',str);
        break;
      }
      else if ( strskip(str,"profile",dum) )  {
        str= dum;
        res= str2val(str,param.profile,str) && param.read_profile.set_ok() && strskip(str,')',str);
        break;
      }
      else if ( strskip(str,"prand_factor_r",dum) )  {
        str= dum;
        res= str2val(str,param.prand_factor_r,str) && param.read_prand_factor_r.set_ok() && strskip(str,')',str);
        break;
      }
      else if ( strskip(str,"prand_factor_l",dum) )  {
        str= dum;
        res= str2val(str,param.prand_factor_l,str) && param.read_prand_factor_l.set_ok() && strskip(str,')',str);
        break;
      }
      else if ( strskip(str,"port",dum) )  {
        str= dum;
        res= str2val(str,param.port,str) && param.read_port.set_ok() && strskip(str,')',str);
        break;
      }
      else if ( strskip(str,"point_to_duration",dum) )  {
        str= dum;
        res= str2val(str,param.point_to_duration,str) && param.read_point_to_duration.set_ok() && strskip(str,')',str);
        break;
      }
      else if ( strskip(str,"point_to_ban",dum) )  {
        str= dum;
        res= str2val(str,param.point_to_ban,str) && param.read_point_to_ban.set_ok() && strskip(str,')',str);
        break;
      }
      else if ( strskip(str,"player_weight",dum) )  {
        str= dum;
        res= str2val(str,param.player_weight,str) && param.read_player_weight.set_ok() && strskip(str,')',str);
        break;
      }
      else if ( strskip(str,"player_speed_max",dum) )  {
        str= dum;
        res= str2val(str,param.player_speed_max,str) && param.read_player_speed_max.set_ok() && strskip(str,')',str);
        break;
      }
      else if ( strskip(str,"player_size",dum) )  {
        str= dum;
        res= str2val(str,param.player_size,str) && param.read_player_size.set_ok() && strskip(str,')',str);
        break;
      }
      else if ( strskip(str,"player_rand",dum) )  {
        str= dum;
        res= str2val(str,param.player_rand,str) && param.read_player_rand.set_ok() && strskip(str,')',str);
        break;
      }
      else if ( strskip(str,"player_decay",dum) )  {
        str= dum;
        res= str2val(str,param.player_decay,str) && param.read_player_decay.set_ok() && strskip(str,')',str);
        break;
      }
      else if ( strskip(str,"player_accel_max",dum) )  {
        str= dum;
        res= str2val(str,param.player_accel_max,str) && param.read_player_accel_max.set_ok() && strskip(str,')',str);
        break;
      }
      unknown_option= true;
      break;
      // ----------------------------------------------------------------
    case 'o': 
      if ( strskip(str,"old_coach_hear",dum) )  {
        str= dum;
        res= str2val(str,param.old_coach_hear,str) && param.read_old_coach_hear.set_ok() && strskip(str,')',str);
        break;
      }
      else if ( strskip(str,"olcoach_port",dum) )  {
        str= dum;
        res= str2val(str,param.olcoach_port,str) && param.read_olcoach_port.set_ok() && strskip(str,')',str);
        break;
      }
      else if ( strskip(str,"offside_kick_margin",dum) )  {
        str= dum;
        res= str2val(str,param.offside_kick_margin,str) && param.read_offside_kick_margin.set_ok() && strskip(str,')',str);
        break;
      }
      else if ( strskip(str,"offside_active_area_size",dum) )  {
        str= dum;
        res= str2val(str,param.offside_active_area_size,str) && param.read_offside_active_area_size.set_ok() && strskip(str,')',str);
        break;
      }
      unknown_option= true;
      break;
      // ----------------------------------------------------------------
    case 'm': 
      if ( strskip(str,"minpower",dum) )  {
        str= dum;
        res= str2val(str,param.minpower,str) && param.read_minpower.set_ok() && strskip(str,')',str);
        break;
      }
      else if ( strskip(str,"minneckmoment",dum) )  {
        str= dum;
        res= str2val(str,param.minneckmoment,str) && param.read_minneckmoment.set_ok() && strskip(str,')',str);
        break;
      }
      else if ( strskip(str,"minneckang",dum) )  {
        str= dum;
        res= str2val(str,param.minneckang,str) && param.read_minneckang.set_ok() && strskip(str,')',str);
        break;
      }
      else if ( strskip(str,"minmoment",dum) )  {
        str= dum;
        res= str2val(str,param.minmoment,str) && param.read_minmoment.set_ok() && strskip(str,')',str);
        break;
      }
      else if ( strskip(str,"maxpower",dum) )  {
        str= dum;
        res= str2val(str,param.maxpower,str) && param.read_maxpower.set_ok() && strskip(str,')',str);
        break;
      }
      else if ( strskip(str,"maxneckmoment",dum) )  {
        str= dum;
        res= str2val(str,param.maxneckmoment,str) && param.read_maxneckmoment.set_ok() && strskip(str,')',str);
        break;
      }
      else if ( strskip(str,"maxneckang",dum) )  {
        str= dum;
        res= str2val(str,param.maxneckang,str) && param.read_maxneckang.set_ok() && strskip(str,')',str);
        break;
      }
      else if ( strskip(str,"maxmoment",dum) )  {
        str= dum;
        res= str2val(str,param.maxmoment,str) && param.read_maxmoment.set_ok() && strskip(str,')',str);
        break;
      }
      else if ( strskip(str,"max_goal_kicks",dum) )  {
        str= dum;
        res= str2val(str,param.max_goal_kicks,str) && param.read_max_goal_kicks.set_ok() && strskip(str,')',str);
        break;
      }
      unknown_option= true;
      break;
      // ----------------------------------------------------------------
    case 'l': 
      if ( strskip(str,"log_times",dum) )  {
        str= dum;
        res= str2val(str,param.log_times,str) && param.read_log_times.set_ok() && strskip(str,')',str);
        break;
      }
      else if ( strskip(str,"log_date_format",dum) )  {
        str= dum;
        res= str2val(str,param.log_date_format,str) && param.read_log_date_format.set_ok() && strskip(str,')',str);
        break;
      }
      else if ( strskip(str,"landmark_file",dum) )  {
        str= dum;
        res= str2val(str,param.landmark_file,str) && param.read_landmark_file.set_ok() && strskip(str,')',str);
        break;
      }
      unknown_option= true;
      break;
      // ----------------------------------------------------------------
    case 'k': 
      if ( strskip(str,"kickable_margin",dum) )  {
        str= dum;
        res= str2val(str,param.kickable_margin,str) && param.read_kickable_margin.set_ok() && strskip(str,')',str);
        break;
      }
      else if ( strskip(str,"kick_rand_factor_r",dum) )  {
        str= dum;
        res= str2val(str,param.kick_rand_factor_r,str) && param.read_kick_rand_factor_r.set_ok() && strskip(str,')',str);
        break;
      }
      else if ( strskip(str,"kick_rand_factor_l",dum) )  {
        str= dum;
        res= str2val(str,param.kick_rand_factor_l,str) && param.read_kick_rand_factor_l.set_ok() && strskip(str,')',str);
        break;
      }
      else if ( strskip(str,"kick_rand",dum) )  {
        str= dum;
        res= str2val(str,param.kick_rand,str) && param.read_kick_rand.set_ok() && strskip(str,')',str);
        break;
      }
      else if ( strskip(str,"kick_power_rate",dum) )  {
        str= dum;
        res= str2val(str,param.kick_power_rate,str) && param.read_kick_power_rate.set_ok() && strskip(str,')',str);
        break;
      }
      unknown_option= true;
      break;
      // ----------------------------------------------------------------
    case 'i': 
      if ( strskip(str,"inertia_moment",dum) )  {
        str= dum;
        res= str2val(str,param.inertia_moment,str) && param.read_inertia_moment.set_ok() && strskip(str,')',str);
        break;
      }
      unknown_option= true;
      break;
      // ----------------------------------------------------------------
    case 'h': 
      if ( strskip(str,"hear_max",dum) )  {
        str= dum;
        res= str2val(str,param.hear_max,str) && param.read_hear_max.set_ok() && strskip(str,')',str);
        break;
      }
      else if ( strskip(str,"hear_inc",dum) )  {
        str= dum;
        res= str2val(str,param.hear_inc,str) && param.read_hear_inc.set_ok() && strskip(str,')',str);
        break;
      }
      else if ( strskip(str,"hear_decay",dum) )  {
        str= dum;
        res= str2val(str,param.hear_decay,str) && param.read_hear_decay.set_ok() && strskip(str,')',str);
        break;
      }
      else if ( strskip(str,"half_time",dum) )  {
        str= dum;
        res= str2val(str,param.half_time,str) && param.read_half_time.set_ok() && strskip(str,')',str);
        break;
      }
      unknown_option= true;
      break;
      // ----------------------------------------------------------------
    case 'g': 
      if ( strskip(str,"goalie_max_moves",dum) )  {
        str= dum;
        res= str2val(str,param.goalie_max_moves,str) && param.read_goalie_max_moves.set_ok() && strskip(str,')',str);
        break;
      }
      else if ( strskip(str,"goal_width",dum) )  {
        str= dum;
        res= str2val(str,param.goal_width,str) && param.read_goal_width.set_ok() && strskip(str,')',str);
        break;
      }
      else if ( strskip(str,"game_logging",dum) )  {
        str= dum;
        res= str2val(str,param.game_logging,str) && param.read_game_logging.set_ok() && strskip(str,')',str);
        break;
      }
      else if ( strskip(str,"game_log_version",dum) )  {
        str= dum;
        res= str2val(str,param.game_log_version,str) && param.read_game_log_version.set_ok() && strskip(str,')',str);
        break;
      }
      else if ( strskip(str,"game_log_fixed_name",dum) )  {
        str= dum;
        res= str2val(str,param.game_log_fixed_name,str) && param.read_game_log_fixed_name.set_ok() && strskip(str,')',str);
        break;
      }
      else if ( strskip(str,"game_log_fixed",dum) )  {
        str= dum;
        res= str2val(str,param.game_log_fixed,str) && param.read_game_log_fixed.set_ok() && strskip(str,')',str);
        break;
      }
      else if ( strskip(str,"game_log_dir",dum) )  {
        str= dum;
        res= str2val(str,param.game_log_dir,str) && param.read_game_log_dir.set_ok() && strskip(str,')',str);
        break;
      }
      else if ( strskip(str,"game_log_dated",dum) )  {
        str= dum;
        res= str2val(str,param.game_log_dated,str) && param.read_game_log_dated.set_ok() && strskip(str,')',str);
        break;
      }
      else if ( strskip(str,"game_log_compression",dum) )  {
        str= dum;
        res= str2val(str,param.game_log_compression,str) && param.read_game_log_compression.set_ok() && strskip(str,')',str);
        break;
      }
      unknown_option= true;
      break;
      // ----------------------------------------------------------------
    case 'f': 
      if ( strskip(str,"fullstate_r",dum) )  {
        str= dum;
        res= str2val(str,param.fullstate_r,str) && param.read_fullstate_r.set_ok() && strskip(str,')',str);
        break;
      }
      else if ( strskip(str,"fullstate_l",dum) )  {
        str= dum;
        res= str2val(str,param.fullstate_l,str) && param.read_fullstate_l.set_ok() && strskip(str,')',str);
        break;
      }
      else if ( strskip(str,"freeform_wait_period",dum) )  {
        str= dum;
        res= str2val(str,param.freeform_wait_period,str) && param.read_freeform_wait_period.set_ok() && strskip(str,')',str);
        break;
      }
      else if ( strskip(str,"freeform_send_period",dum) )  {
        str= dum;
        res= str2val(str,param.freeform_send_period,str) && param.read_freeform_send_period.set_ok() && strskip(str,')',str);
        break;
      }
      else if ( strskip(str,"free_kick_faults",dum) )  {
        str= dum;
        res= str2val(str,param.free_kick_faults,str) && param.read_free_kick_faults.set_ok() && strskip(str,')',str);
        break;
      }
      else if ( strskip(str,"forbid_kick_off_offside",dum) )  {
        str= dum;
        res= str2val(str,param.forbid_kick_off_offside,str) && param.read_forbid_kick_off_offside.set_ok() && strskip(str,')',str);
        break;
      }
      unknown_option= true;
      break;
      // ----------------------------------------------------------------
    case 'e': 
      if ( strskip(str,"effort_min",dum) )  {
        str= dum;
        res= str2val(str,param.effort_min,str) && param.read_effort_min.set_ok() && strskip(str,')',str);
        break;
      }
      else if ( strskip(str,"effort_init",dum) )  {
        str= dum;
        res= str2val(str,param.effort_init,str) && param.read_effort_init.set_ok() && strskip(str,')',str);
        break;
      }
      else if ( strskip(str,"effort_inc_thr",dum) )  {
        str= dum;
        res= str2val(str,param.effort_inc_thr,str) && param.read_effort_inc_thr.set_ok() && strskip(str,')',str);
        break;
      }
      else if ( strskip(str,"effort_inc",dum) )  {
        str= dum;
        res= str2val(str,param.effort_inc,str) && param.read_effort_inc.set_ok() && strskip(str,')',str);
        break;
      }
      else if ( strskip(str,"effort_dec_thr",dum) )  {
        str= dum;
        res= str2val(str,param.effort_dec_thr,str) && param.read_effort_dec_thr.set_ok() && strskip(str,')',str);
        break;
      }
      else if ( strskip(str,"effort_dec",dum) )  {
        str= dum;
        res= str2val(str,param.effort_dec,str) && param.read_effort_dec.set_ok() && strskip(str,')',str);
        break;
      }
      unknown_option= true;
      break;
      // ----------------------------------------------------------------
    case 'd': 
      if ( strskip(str,"drop_ball_time",dum) )  {
        str= dum;
        res= str2val(str,param.drop_ball_time,str) && param.read_drop_ball_time.set_ok() && strskip(str,')',str);
        break;
      }
      else if ( strskip(str,"dash_power_rate",dum) )  {
        str= dum;
        res= str2val(str,param.dash_power_rate,str) && param.read_dash_power_rate.set_ok() && strskip(str,')',str);
        break;
      }
      unknown_option= true;
      break;
      // ----------------------------------------------------------------
    case 'c': 
      if ( strskip(str,"control_radius",dum) )  {
        str= dum;
        res= str2val(str,param.control_radius,str) && param.read_control_radius.set_ok() && strskip(str,')',str);
        break;
      }
      else if ( strskip(str,"coach_w_referee",dum) )  {
        str= dum;
        res= str2val(str,param.coach_w_referee,str) && param.read_coach_w_referee.set_ok() && strskip(str,')',str);
        break;
      }
      else if ( strskip(str,"coach_port",dum) )  {
        str= dum;
        res= str2val(str,param.coach_port,str) && param.read_coach_port.set_ok() && strskip(str,')',str);
        break;
      }
      else if ( strskip(str,"coach",dum) )  {
        str= dum;
        res= str2val(str,param.coach,str) && param.read_coach.set_ok() && strskip(str,')',str);
        break;
      }
      else if ( strskip(str,"clang_win_size",dum) )  {
        str= dum;
        res= str2val(str,param.clang_win_size,str) && param.read_clang_win_size.set_ok() && strskip(str,')',str);
        break;
      }
      else if ( strskip(str,"clang_rule_win",dum) )  {
        str= dum;
        res= str2val(str,param.clang_rule_win,str) && param.read_clang_rule_win.set_ok() && strskip(str,')',str);
        break;
      }
      else if ( strskip(str,"clang_meta_win",dum) )  {
        str= dum;
        res= str2val(str,param.clang_meta_win,str) && param.read_clang_meta_win.set_ok() && strskip(str,')',str);
        break;
      }
      else if ( strskip(str,"clang_mess_per_cycle",dum) )  {
        str= dum;
        res= str2val(str,param.clang_mess_per_cycle,str) && param.read_clang_mess_per_cycle.set_ok() && strskip(str,')',str);
        break;
      }
      else if ( strskip(str,"clang_mess_delay",dum) )  {
        str= dum;
        res= str2val(str,param.clang_mess_delay,str) && param.read_clang_mess_delay.set_ok() && strskip(str,')',str);
        break;
      }
      else if ( strskip(str,"clang_info_win",dum) )  {
        str= dum;
        res= str2val(str,param.clang_info_win,str) && param.read_clang_info_win.set_ok() && strskip(str,')',str);
        break;
      }
      else if ( strskip(str,"clang_del_win",dum) )  {
        str= dum;
        res= str2val(str,param.clang_del_win,str) && param.read_clang_del_win.set_ok() && strskip(str,')',str);
        break;
      }
      else if ( strskip(str,"clang_define_win",dum) )  {
        str= dum;
        res= str2val(str,param.clang_define_win,str) && param.read_clang_define_win.set_ok() && strskip(str,')',str);
        break;
      }
      else if ( strskip(str,"clang_advice_win",dum) )  {
        str= dum;
        res= str2val(str,param.clang_advice_win,str) && param.read_clang_advice_win.set_ok() && strskip(str,')',str);
        break;
      }
      else if ( strskip(str,"ckick_margin",dum) )  {
        str= dum;
        res= str2val(str,param.ckick_margin,str) && param.read_ckick_margin.set_ok() && strskip(str,')',str);
        break;
      }
      else if ( strskip(str,"catchable_area_w",dum) )  {
        str= dum;
        res= str2val(str,param.catchable_area_w,str) && param.read_catchable_area_w.set_ok() && strskip(str,')',str);
        break;
      }
      else if ( strskip(str,"catchable_area_l",dum) )  {
        str= dum;
        res= str2val(str,param.catchable_area_l,str) && param.read_catchable_area_l.set_ok() && strskip(str,')',str);
        break;
      }
      else if ( strskip(str,"catch_probability",dum) )  {
        str= dum;
        res= str2val(str,param.catch_probability,str) && param.read_catch_probability.set_ok() && strskip(str,')',str);
        break;
      }
      else if ( strskip(str,"catch_ban_cycle",dum) )  {
        str= dum;
        res= str2val(str,param.catch_ban_cycle,str) && param.read_catch_ban_cycle.set_ok() && strskip(str,')',str);
        break;
      }
      unknown_option= true;
      break;
      // ----------------------------------------------------------------
    case 'b': 
      if ( strskip(str,"ball_weight",dum) )  {
        str= dum;
        res= str2val(str,param.ball_weight,str) && param.read_ball_weight.set_ok() && strskip(str,')',str);
        break;
      }
      else if ( strskip(str,"ball_speed_max",dum) )  {
        str= dum;
        res= str2val(str,param.ball_speed_max,str) && param.read_ball_speed_max.set_ok() && strskip(str,')',str);
        break;
      }
      else if ( strskip(str,"ball_size",dum) )  {
        str= dum;
        res= str2val(str,param.ball_size,str) && param.read_ball_size.set_ok() && strskip(str,')',str);
        break;
      }
      else if ( strskip(str,"ball_rand",dum) )  {
        str= dum;
        res= str2val(str,param.ball_rand,str) && param.read_ball_rand.set_ok() && strskip(str,')',str);
        break;
      }
      else if ( strskip(str,"ball_decay",dum) )  {
        str= dum;
        res= str2val(str,param.ball_decay,str) && param.read_ball_decay.set_ok() && strskip(str,')',str);
        break;
      }
      else if ( strskip(str,"ball_accel_max",dum) )  {
        str= dum;
        res= str2val(str,param.ball_accel_max,str) && param.read_ball_accel_max.set_ok() && strskip(str,')',str);
        break;
      }
      else if ( strskip(str,"back_passes",dum) )  {
        str= dum;
        res= str2val(str,param.back_passes,str) && param.read_back_passes.set_ok() && strskip(str,')',str);
        break;
      }
      unknown_option= true;
      break;
      // ----------------------------------------------------------------
    case 'a': 
      if ( strskip(str,"audio_cut_dist",dum) )  {
        str= dum;
        res= str2val(str,param.audio_cut_dist,str) && param.read_audio_cut_dist.set_ok() && strskip(str,')',str);
        break;
      }
    default: 
      unknown_option= true;
    }
    if ( unknown_option ) {
      WARNING_OUT << "\nunkown server option [";
        while ( *str != '\0' && *str != ')' )
          WARNING_STREAM << *str++;
        WARNING_STREAM << "]";
        if ( *str == ')' )
          str++;
        else
          res= false;
    }
  } //while
  
  if (!res) {
    ERROR_OUT << "\nparse error:\n";
    show_parser_error_point(ERROR_STREAM,origin,str);
  }
  return res;
}

/* automatically generated from a server_param message using
   bool produce_server_param_parser()

                  DO NOT EDIT THIS FILE !!!
*/
#include "sensorparser.h"
#include "str2val.h"
#include "macro_msg.h"

bool SensorParser::manual_parse_player_param(const char * str, Msg_player_param & param) {
  const char * origin= str;
  
  bool res;
  
  char const* dum;
  res= strskip(str,"(player_param",str);
  while (res) {
    res= strskip(str,'(',str);
    if ( ! res ) {
      res= strskip(str,')',str);
      break;
    }
    bool unknown_option= false;
    switch( *str ) {
      // ----------------------------------------------------------------
    case 's': 
      if ( strskip(str,"subs_max",dum) )  {
        str= dum;
        res= str2val(str,param.subs_max,str) && param.read_subs_max.set_ok() && strskip(str,')',str);
        break;
      }
      else if ( strskip(str,"stamina_inc_max_delta_factor",dum) )  {
        str= dum;
        res= str2val(str,param.stamina_inc_max_delta_factor,str) && param.read_stamina_inc_max_delta_factor.set_ok() && strskip(str,')',str);
        break;
      }
      unknown_option= true;
      break;
      // ----------------------------------------------------------------
    case 'r': 
      if ( strskip(str,"random_seed",dum) )  {
        str= dum;
        res= str2val(str,param.random_seed,str) && param.read_random_seed.set_ok() && strskip(str,')',str);
        break;
      }
      unknown_option= true;
      break;
      // ----------------------------------------------------------------
    case 'p': 
      if ( strskip(str,"pt_max",dum) )  {
        str= dum;
        res= str2val(str,param.pt_max,str) && param.read_pt_max.set_ok() && strskip(str,')',str);
        break;
      }
      else if ( strskip(str,"player_types",dum) )  {
        str= dum;
        res= str2val(str,param.player_types,str) && param.read_player_types.set_ok() && strskip(str,')',str);
        break;
      }
      else if ( strskip(str,"player_speed_max_delta_min",dum) )  {
        str= dum;
        res= str2val(str,param.player_speed_max_delta_min,str) && param.read_player_speed_max_delta_min.set_ok() && strskip(str,')',str);
        break;
      }
      else if ( strskip(str,"player_speed_max_delta_max",dum) )  {
        str= dum;
        res= str2val(str,param.player_speed_max_delta_max,str) && param.read_player_speed_max_delta_max.set_ok() && strskip(str,')',str);
        break;
      }
      else if ( strskip(str,"player_size_delta_factor",dum) )  {
        str= dum;
        res= str2val(str,param.player_size_delta_factor,str) && param.read_player_size_delta_factor.set_ok() && strskip(str,')',str);
        break;
      }
      else if ( strskip(str,"player_decay_delta_min",dum) )  {
        str= dum;
        res= str2val(str,param.player_decay_delta_min,str) && param.read_player_decay_delta_min.set_ok() && strskip(str,')',str);
        break;
      }
      else if ( strskip(str,"player_decay_delta_max",dum) )  {
        str= dum;
        res= str2val(str,param.player_decay_delta_max,str) && param.read_player_decay_delta_max.set_ok() && strskip(str,')',str);
        break;
      }
      unknown_option= true;
      break;
      // ----------------------------------------------------------------
    case 'n': 
      if ( strskip(str,"new_stamina_inc_max_delta_factor",dum) )  {
        str= dum;
        res= str2val(str,param.new_stamina_inc_max_delta_factor,str) && param.read_new_stamina_inc_max_delta_factor.set_ok() && strskip(str,')',str);
        break;
      }
      else if ( strskip(str,"new_dash_power_rate_delta_min",dum) )  {
        str= dum;
        res= str2val(str,param.new_dash_power_rate_delta_min,str) && param.read_new_dash_power_rate_delta_min.set_ok() && strskip(str,')',str);
        break;
      }
      else if ( strskip(str,"new_dash_power_rate_delta_max",dum) )  {
        str= dum;
        res= str2val(str,param.new_dash_power_rate_delta_max,str) && param.read_new_dash_power_rate_delta_max.set_ok() && strskip(str,')',str);
        break;
      }
      unknown_option= true;
      break;
      // ----------------------------------------------------------------
    case 'k': 
      if ( strskip(str,"kickable_margin_delta_min",dum) )  {
        str= dum;
        res= str2val(str,param.kickable_margin_delta_min,str) && param.read_kickable_margin_delta_min.set_ok() && strskip(str,')',str);
        break;
      }
      else if ( strskip(str,"kickable_margin_delta_max",dum) )  {
        str= dum;
        res= str2val(str,param.kickable_margin_delta_max,str) && param.read_kickable_margin_delta_max.set_ok() && strskip(str,')',str);
        break;
      }
      else if ( strskip(str,"kick_rand_delta_factor",dum) )  {
        str= dum;
        res= str2val(str,param.kick_rand_delta_factor,str) && param.read_kick_rand_delta_factor.set_ok() && strskip(str,')',str);
        break;
      }
      unknown_option= true;
      break;
      // ----------------------------------------------------------------
    case 'i': 
      if ( strskip(str,"inertia_moment_delta_factor",dum) )  {
        str= dum;
        res= str2val(str,param.inertia_moment_delta_factor,str) && param.read_inertia_moment_delta_factor.set_ok() && strskip(str,')',str);
        break;
      }
      unknown_option= true;
      break;
      // ----------------------------------------------------------------
    case 'e': 
      if ( strskip(str,"extra_stamina_delta_min",dum) )  {
        str= dum;
        res= str2val(str,param.extra_stamina_delta_min,str) && param.read_extra_stamina_delta_min.set_ok() && strskip(str,')',str);
        break;
      }
      else if ( strskip(str,"extra_stamina_delta_max",dum) )  {
        str= dum;
        res= str2val(str,param.extra_stamina_delta_max,str) && param.read_extra_stamina_delta_max.set_ok() && strskip(str,')',str);
        break;
      }
      else if ( strskip(str,"effort_min_delta_factor",dum) )  {
        str= dum;
        res= str2val(str,param.effort_min_delta_factor,str) && param.read_effort_min_delta_factor.set_ok() && strskip(str,')',str);
        break;
      }
      else if ( strskip(str,"effort_max_delta_factor",dum) )  {
        str= dum;
        res= str2val(str,param.effort_max_delta_factor,str) && param.read_effort_max_delta_factor.set_ok() && strskip(str,')',str);
        break;
      }
      unknown_option= true;
      break;
      // ----------------------------------------------------------------
    case 'd': 
      if ( strskip(str,"dash_power_rate_delta_min",dum) )  {
        str= dum;
        res= str2val(str,param.dash_power_rate_delta_min,str) && param.read_dash_power_rate_delta_min.set_ok() && strskip(str,')',str);
        break;
      }
      else if ( strskip(str,"dash_power_rate_delta_max",dum) )  {
        str= dum;
        res= str2val(str,param.dash_power_rate_delta_max,str) && param.read_dash_power_rate_delta_max.set_ok() && strskip(str,')',str);
        break;
      }
    default: 
      unknown_option= true;
    }
    if ( unknown_option ) {
      WARNING_OUT << "\nunkown server option [";
        while ( *str != '\0' && *str != ')' )
          WARNING_STREAM << *str++;
        WARNING_STREAM << "]";
        if ( *str == ')' )
          str++;
        else
          res= false;
    }
  } //while
  
  if (!res) {
    ERROR_OUT << "\nparse error:\n";
    show_parser_error_point(ERROR_STREAM,origin,str);
  }
  return res;
}
